home *** CD-ROM | disk | FTP | other *** search
/ Aminet 21 / Aminet 21 (1997)(GTI - Schatztruhe)[!][Oct 1997].iso / Aminet / game / text / inform_lib66.lha / English.h next >
Text File  |  1997-08-24  |  35KB  |  850 lines

  1. ! ===========================================================================
  2. !   Inform Language Definition File: English 970818
  3. !
  4. !   (c) Graham Nelson 1997
  5. !
  6. !   Define the constant DIALECT_US before including "Parser" to
  7. !   obtain American English
  8. ! ---------------------------------------------------------------------------
  9. System_file;
  10. ! ---------------------------------------------------------------------------
  11. !   Part I.   Preliminaries
  12. ! ---------------------------------------------------------------------------
  13. Constant EnglishNaturalLanguage;   ! Needed to keep old pronouns mechanism
  14.  
  15. Class  CompassDirection
  16.   with article "the", number 0
  17.   has  scenery;
  18. Object Compass "compass" has concealed;
  19. IFNDEF WITHOUT_DIRECTIONS;
  20. CompassDirection -> n_obj "north wall"
  21.                     with name 'n//' 'north' 'wall',    door_dir n_to;
  22. CompassDirection -> s_obj "south wall"
  23.                     with name 's//' 'south' 'wall',    door_dir s_to;
  24. CompassDirection -> e_obj "east wall"
  25.                     with name 'e//' 'east' 'wall',     door_dir e_to;
  26. CompassDirection -> w_obj "west wall"
  27.                     with name 'w//' 'west' 'wall',     door_dir w_to;
  28. CompassDirection -> ne_obj "northeast wall"
  29.                     with name 'ne' 'northeast' 'wall', door_dir ne_to;
  30. CompassDirection -> nw_obj "northwest wall"
  31.                     with name 'nw' 'northwest' 'wall', door_dir nw_to;
  32. CompassDirection -> se_obj "southeast wall"
  33.                     with name 'se' 'southeast' 'wall', door_dir se_to;
  34. CompassDirection -> sw_obj "southwest wall"
  35.                     with name 'sw' 'southwest' 'wall', door_dir sw_to;
  36. CompassDirection -> u_obj "ceiling"
  37.                     with name 'u//' 'up' 'ceiling',    door_dir u_to;
  38. CompassDirection -> d_obj "floor"
  39.                     with name 'd//' 'down' 'floor',    door_dir d_to;
  40. ENDIF;
  41. CompassDirection -> out_obj "outside"
  42.                     with                               door_dir out_to;
  43. CompassDirection -> in_obj "inside"
  44.                     with                               door_dir in_to;
  45. ! ---------------------------------------------------------------------------
  46. !   Part II.   Vocabulary
  47. ! ---------------------------------------------------------------------------
  48. Constant AGAIN1__WD   = 'again';
  49. Constant AGAIN2__WD   = 'g//';
  50. Constant AGAIN3__WD   = 'again';
  51. Constant OOPS1__WD    = 'oops';
  52. Constant OOPS2__WD    = 'o//';
  53. Constant OOPS3__WD    = 'oops';
  54. Constant UNDO1__WD    = 'undo';
  55. Constant UNDO2__WD    = 'undo';
  56. Constant UNDO3__WD    = 'undo';
  57.  
  58. Constant ALL1__WD     = 'all';
  59. Constant ALL2__WD     = 'each';
  60. Constant ALL3__WD     = 'every';
  61. Constant ALL4__WD     = 'everything';
  62. Constant ALL5__WD     = 'both';
  63. Constant AND1__WD     = 'and';
  64. Constant AND2__WD     = 'and';
  65. Constant AND3__WD     = 'and';
  66. Constant BUT1__WD     = 'but';
  67. Constant BUT2__WD     = 'except';
  68. Constant BUT3__WD     = 'but';
  69. Constant ME1__WD      = 'me';
  70. Constant ME2__WD      = 'myself';
  71. Constant ME3__WD      = 'self';
  72. Constant OF1__WD      = 'of';
  73. Constant OF2__WD      = 'of';
  74. Constant OF3__WD      = 'of';
  75. Constant OF4__WD      = 'of';
  76. Constant OTHER1__WD   = 'another';
  77. Constant OTHER2__WD   = 'other';
  78. Constant OTHER3__WD   = 'other';
  79. Constant THEN1__WD    = 'then';
  80. Constant THEN2__WD    = 'then';
  81. Constant THEN3__WD    = 'then';
  82.  
  83. Constant NO1__WD      = 'n//';
  84. Constant NO2__WD      = 'no';
  85. Constant NO3__WD      = 'no';
  86. Constant YES1__WD     = 'y//';
  87. Constant YES2__WD     = 'yes';
  88. Constant YES3__WD     = 'yes';
  89.  
  90. Constant AMUSING__WD  = 'amusing';
  91. Constant FULLSCORE1__WD = 'fullscore';
  92. Constant FULLSCORE2__WD = 'full';
  93. Constant QUIT1__WD    = 'q//';
  94. Constant QUIT2__WD    = 'quit';
  95. Constant RESTART__WD  = 'restart';
  96. Constant RESTORE__WD  = 'restore';
  97.  
  98. Array LanguagePronouns table
  99.  
  100.    !  word       possible GNAs                   connected
  101.    !             to follow:                      to:
  102.    !             a     i
  103.    !             s  p  s  p
  104.    !             mfnmfnmfnmfn                 
  105.  
  106.       'it'     $$001000111000                    NULL
  107.       'him'    $$100000000000                    NULL
  108.       'her'    $$010000000000                    NULL
  109.       'them'   $$000111000111                    NULL;
  110.  
  111. Array LanguageDescriptors table
  112.  
  113.    !  word       possible GNAs   descriptor      connected
  114.    !             to follow:      type:           to:
  115.    !             a     i
  116.    !             s  p  s  p
  117.    !             mfnmfnmfnmfn                 
  118.  
  119.       'my'     $$111111111111    POSSESS_PK      0
  120.       'this'   $$111111111111    POSSESS_PK      0
  121.       'these'  $$000111000111    POSSESS_PK      0
  122.       'that'   $$111111111111    POSSESS_PK      1
  123.       'those'  $$000111000111    POSSESS_PK      1
  124.       'his'    $$111111111111    POSSESS_PK      'him'
  125.       'her'    $$111111111111    POSSESS_PK      'her'
  126.       'their'  $$111111111111    POSSESS_PK      'them'
  127.       'its'    $$111111111111    POSSESS_PK      'it'
  128.       'the'    $$111111111111    DEFART_PK       NULL
  129.       'a//'    $$111000111000    INDEFART_PK     NULL
  130.       'an'     $$111000111000    INDEFART_PK     NULL
  131.       'some'   $$000111000111    INDEFART_PK     NULL
  132.       'lit'    $$111111111111    light           NULL
  133.      'lighted' $$111111111111    light           NULL
  134.       'unlit'  $$111111111111    (-light)        NULL;
  135.  
  136. Array LanguageNumbers table
  137.     'one' 1 'two' 2 'three' 3 'four' 4 'five' 5
  138.     'six' 6 'seven' 7 'eight' 8 'nine' 9 'ten' 10
  139.     'eleven' 11 'twelve' 12 'thirteen' 13 'fourteen' 14 'fifteen' 15
  140.     'sixteen' 16 'seventeen' 17 'eighteen' 18 'nineteen' 19 'twenty' 20;
  141.  
  142. ! ---------------------------------------------------------------------------
  143. !   Part III.   Translation
  144. ! ---------------------------------------------------------------------------
  145.  
  146. [ LanguageToInformese;
  147. ];
  148.  
  149. ! ---------------------------------------------------------------------------
  150. !   Part IV.   Printing
  151. ! ---------------------------------------------------------------------------
  152.  
  153. Constant LanguageAnimateGender   = male;
  154. Constant LanguageInanimateGender = neuter;
  155.  
  156. Constant LanguageContractionForms = 2;     ! English has two:
  157.                                            ! 0 = starting with a consonant
  158.                                            ! 1 = starting with a vowel
  159.  
  160. [ LanguageContraction text;
  161.   if (text->0 == 'a' or 'e' or 'i' or 'o' or 'u'
  162.                  or 'A' or 'E' or 'I' or 'O' or 'U') return 1;
  163.   return 0;
  164. ];
  165.  
  166. Array LanguageArticles -->
  167.  
  168.  !   Contraction form 0:     Contraction form 1:
  169.  !   Cdef   Def    Indef     Cdef   Def    Indef
  170.  
  171.      "The " "the " "a "      "The " "the " "an "          ! Articles 0
  172.      "The " "the " "some "   "The " "the " "some ";       ! Articles 1
  173.  
  174.                    !             a           i
  175.                    !             s     p     s     p
  176.                    !             m f n m f n m f n m f n                 
  177.  
  178. Array LanguageGNAsToArticles --> 0 0 0 1 1 1 0 0 0 1 1 1;
  179.  
  180. [ LanguageDirection d;
  181.    switch(d)
  182.    {   n_to: print "north";
  183.        s_to: print "south";
  184.        e_to: print "east";
  185.        w_to: print "west";
  186.        ne_to: print "northeast";
  187.        nw_to: print "northwest";
  188.        se_to: print "southeast";
  189.        sw_to: print "southwest";
  190.        u_to: print "up";
  191.        d_to: print "down";
  192.        in_to: print "in";
  193.        out_to: print "out";
  194.        default: return RunTimeError(9,d);
  195.    }
  196. ];
  197.  
  198. [ LanguageNumber n f;
  199.   if (n==0)    { print "zero"; rfalse; }
  200.   if (n<0)     { print "minus "; n=-n; }
  201.   if (n>=1000) { print (LanguageNumber) n/1000, " thousand"; n=n%1000; f=1; }
  202.   if (n>=100)  { if (f==1) print ", ";
  203.                  print (LanguageNumber) n/100, " hundred"; n=n%100; f=1; }
  204.   if (n==0) rfalse;
  205.   #ifndef DIALECT_US;
  206.   if (f==1) print " and ";
  207.   #ifnot;
  208.   if (f==1) print " ";
  209.   #endif;
  210.   switch(n)
  211.   {   1:  print "one";
  212.       2:  print "two";
  213.       3:  print "three";
  214.       4:  print "four";
  215.       5:  print "five";
  216.       6:  print "six";
  217.       7:  print "seven";
  218.       8:  print "eight";
  219.       9:  print "nine";
  220.       10: print "ten";
  221.       11: print "eleven";
  222.       12: print "twelve";
  223.       13: print "thirteen";
  224.       14: print "fourteen";
  225.       15: print "fifteen";
  226.       16: print "sixteen";
  227.       17: print "seventeen";
  228.       18: print "eighteen";
  229.       19: print "nineteen";
  230.       20 to 99:
  231.           switch(n/10)
  232.           {  2: print "twenty";
  233.              3: print "thirty";
  234.              4: print "forty";
  235.              5: print "fifty";
  236.              6: print "sixty";
  237.              7: print "seventy";
  238.              8: print "eighty";
  239.              9: print "ninety";
  240.           }
  241.           if (n%10 ~= 0) print "-", (LanguageNumber) n%10;
  242.   }
  243. ];
  244.  
  245. [ LanguageTimeOfDay hours mins i;
  246.    i=hours%12;
  247.    if (i==0) i=12;
  248.    if (i<10) print " ";
  249.    print i, ":", mins/10, mins%10;
  250.    if ((hours/12) > 0) print " pm"; else print " am";
  251. ];
  252.  
  253. [ LanguageVerb i;
  254.    if (i==#n$l)        { print "look";              rtrue; }
  255.    if (i==#n$z)        { print "wait";              rtrue; }
  256.    if (i==#n$x)        { print "examine";           rtrue; }
  257.    if (i==#n$i or 'inv' or 'inventory')
  258.                        { print "inventory";         rtrue; }
  259.    rfalse;
  260. ];
  261.  
  262. Constant NKEY__TX     = "N = next subject";
  263. Constant PKEY__TX     = "P = previous";
  264. Constant QKEY1__TX    = "  Q = resume game";
  265. Constant QKEY2__TX    = "Q = previous menu";
  266. Constant RKEY__TX     = "RETURN = read subject";
  267.  
  268. Constant NKEY1__KY    = 'N';
  269. Constant NKEY2__KY    = 'n';
  270. Constant PKEY1__KY    = 'P';
  271. Constant PKEY2__KY    = 'p';
  272. Constant QKEY1__KY    = 'Q';
  273. Constant QKEY2__KY    = 'q';
  274.  
  275. Constant SCORE__TX    = "Score: ";
  276. Constant MOVES__TX    = "Moves: ";
  277. Constant TIME__TX     = "Time: ";
  278. Constant CANTGO__TX   = "You can't go that way.";
  279. Constant FORMER__TX   = "your former self";
  280. Constant YOURSELF__TX = "yourself";
  281. Constant DARKNESS__TX = "Darkness";
  282.  
  283. Constant THOSET__TX   = "those things";
  284. Constant THAT__TX     = "that";
  285. Constant OR__TX       = " or ";
  286. Constant NOTHING__TX  = "nothing";
  287. Constant IS__TX       = " is";
  288. Constant ARE__TX      = " are";
  289. Constant IS2__TX      = "is ";
  290. Constant ARE2__TX     = "are ";
  291. Constant AND__TX      = " and ";
  292. Constant WHOM__TX     = "whom ";
  293. Constant WHICH__TX    = "which ";
  294.  
  295. [ ThatorThose obj; if (obj has pluralname) { print "those"; return; }
  296.   if (obj has animate)
  297.   {   if (obj has female) { print "she"; return; }
  298.       else if (obj hasnt neuter) { print "he"; return; }
  299.   }
  300.   print "that";
  301. ];
  302. [ ItorThem obj;
  303.   if (obj has pluralname) { print "them"; return; }
  304.   if (obj has animate)
  305.   {   if (obj has female) { print "her"; return; }
  306.       else if (obj hasnt neuter) { print "him"; return; }
  307.   }
  308.   print "it";
  309. ];
  310. [ IsorAre obj; if (obj has pluralname) print "are"; else print "is";
  311. ];
  312. [ CThatorThose obj; if (obj has pluralname) print "Those";
  313.   if (obj has animate)
  314.   {   if (obj has female) { print "She"; return; }
  315.       else if (obj hasnt neuter) { print "He"; return; }
  316.   }
  317.   print "That";
  318. ];
  319. [ CTheyreorThats obj; if (obj has pluralname) print "They're";
  320.   if (obj has animate)
  321.   {   if (obj has female) { print "She's"; return; }
  322.       else if (obj hasnt neuter) { print "He's"; return; }
  323.   }
  324.   print "That's";
  325. ];
  326.  
  327. [ LanguageLM n x1;
  328.   Prompt:  print "^>";
  329.   Miscellany:
  330.            switch(n)
  331.            {   1: "(considering the first sixteen objects only)^";
  332.                2: "Nothing to do!";
  333.                3: print " You have died ";
  334.                4: print " You have won ";
  335.                5: print "^Would you like to RESTART, RESTORE a saved game";
  336.                   if (TASKS_PROVIDED==0)
  337.                       print ", give the FULL score for that game";
  338.                   if (deadflag==2 && AMUSING_PROVIDED==0)
  339.                       print ", see some suggestions for AMUSING things to do";
  340.                   " or QUIT?";
  341.                6: "[Your interpreter does not provide ~undo~.  Sorry!]";
  342.                7: "~Undo~ failed.  [Not all interpreters provide it.]";
  343.                8: "Please give one of the answers above.";
  344.                9: "^It is now pitch dark in here!";
  345.               10: "I beg your pardon?";
  346.               11: "[You can't ~undo~ what hasn't been done!]";
  347.               12: "[Can't ~undo~ twice in succession. Sorry!]";
  348.               13: "[Previous turn undone.]";
  349.               14: "Sorry, that can't be corrected.";
  350.               15: "Think nothing of it.";
  351.               16: "~Oops~ can only correct a single word.";
  352.               17: "It is pitch dark, and you can't see a thing.";
  353.               18: print "yourself";
  354.               19: "As good-looking as ever.";           
  355.               20: "To repeat a command like ~frog, jump~, just say
  356.                    ~again~, not ~frog, again~.";
  357.               21: "You can hardly repeat that.";
  358.               22: "You can't begin with a comma.";
  359.               23: "You seem to want to talk to someone, but I can't see whom.";
  360.               24: "You can't talk to ", (the) x1, ".";
  361.               25: "To talk to someone, try ~someone, hello~ or some such.";
  362.               26: "(first taking ", (the) not_holding, ")";
  363.               27: "I didn't understand that sentence.";
  364.               28: print "I only understood you as far as wanting to ";
  365.               29: "I didn't understand that number.";
  366.               30: "You can't see any such thing.";
  367.               31: "You seem to have said too little!";
  368.               32: "You aren't holding that!";
  369.               33: "You can't use multiple objects with that verb.";
  370.               34: "You can only use multiple objects once on a line.";
  371.               35: "I'm not sure what ~", (address) pronoun_word,
  372.                   "~ refers to.";
  373.               36: "You excepted something not included anyway!";
  374.               37: "You can only do that to something animate.";
  375.               38: #ifdef DIALECT_US;
  376.                   "That's not a verb I recognize.";
  377.                   #ifnot;
  378.                   "That's not a verb I recognise.";
  379.                   #endif;
  380.               39: "That's not something you need to refer to
  381.                    in the course of this game.";
  382.               40: "You can't see ~", (address) pronoun_word,
  383.                   "~ (", (the) pronoun_obj, ") at the moment.";
  384.               41: "I didn't understand the way that finished.";
  385.               42: if (x1==0) print "None";
  386.                   else print "Only ", (number) x1;
  387.                   print " of those ";
  388.                   if (x1==1) print "is"; else print "are";
  389.                   " available.";
  390.               43: "Nothing to do!";
  391.               44: "There are none at all available!";
  392.               45: print "Who do you mean, ";
  393.               46: print "Which do you mean, ";
  394.               47: "Sorry, you can only have one item here. Which exactly?";
  395.               48: print "Whom do you want";
  396.                   if (actor~=player) print " ", (the) actor; print " to ";
  397.                   PrintCommand(); print "?^";
  398.               49: print "What do you want";
  399.                   if (actor~=player) print " ", (the) actor; print " to ";
  400.                   PrintCommand(); print "?^";
  401.               50: print "Your score has just gone ";
  402.                   if (x1 > 0) print "up"; else { x1 = -x1; print "down"; }
  403.                   print " by ", (number) x1, " point";
  404.                   if (x1 > 1) print "s";
  405.               51: "(Since something dramatic has happened,
  406.                    your list of commands has been cut short.)";
  407.               52: "^Type a number from 1 to ", x1,
  408.                   ", 0 to redisplay or press ENTER.";
  409.               53: "^[Please press SPACE.]";
  410.            }
  411.  
  412.   ListMiscellany:
  413.            switch(n)
  414.            {   1: print " (providing light)";
  415.                2: print " (which ", (isorare) x1, " closed)";
  416.                3: print " (closed and providing light)";
  417.                4: print " (which ", (isorare) x1, " empty)";
  418.                5: print " (empty and providing light)";
  419.                6: print " (which ", (isorare) x1, " closed and empty)";
  420.                7: print " (closed, empty and providing light)";
  421.                8: print " (providing light and being worn";
  422.                9: print " (providing light";
  423.               10: print " (being worn";
  424.               11: print " (which ", (isorare) x1, " ";
  425.               12: print "open";
  426.               13: print "open but empty";
  427.               14: print "closed";
  428.               15: print "closed and locked";
  429.               16: print " and empty";
  430.               17: print " (which ", (isorare) x1, " empty)";
  431.               18: print " containing ";
  432.               19: print " (on ";
  433.               20: print ", on top of ";
  434.               21: print " (in ";
  435.               22: print ", inside ";
  436.            }
  437.  
  438.   Pronouns: switch(n)
  439.            {   1: print "At the moment, ";
  440.                2: print "means ";
  441.                3: print "is unset";
  442.                4: "no pronouns are known to the game.";
  443.            }
  444.   Order:          print (The) x1;
  445.                   if (x1 has pluralname) print " have"; else print " has";
  446.                   " better things to do.";
  447.   Quit:    switch(n)
  448.            {   1: print "Please answer yes or no.";
  449.                2: print "Are you sure you want to quit? ";
  450.            }
  451.   Restart: switch(n)
  452.            {   1: print "Are you sure you want to restart? ";
  453.                2: "Failed.";
  454.            }
  455.   Restore: switch(n)
  456.            {   1: "Restore failed.";
  457.                2: "Ok.";
  458.            }
  459.   Save:    switch(n)
  460.            {   1: "Save failed.";
  461.                2: "Ok.";
  462.            }
  463.   Verify:  switch(n)
  464.            {   1: "The game file has verified as intact.";
  465.                2: "The game file did not verify as intact, and may be corrupted
  466.                    (unless you are playing it with a very primitive interpreter
  467.                    which is unable properly to perform the test).";
  468.            }
  469.   ScriptOn: switch(n)
  470.            {   1: "Transcripting is already on.";
  471.                2: "Start of a transcript of";
  472.            }
  473.   ScriptOff: switch(n)
  474.            {   1: "Transcripting is already off.";
  475.                2: "^End of transcript.";
  476.            }
  477.   NotifyOn:       "Score notification on.";
  478.   NotifyOff:      "Score notification off.";
  479.   Places:         print "You have visited: ";
  480.   Objects: switch(n)
  481.            {   1: "Objects you have handled:^";
  482.                2: "None.";
  483.                3: print "   (worn)";
  484.                4: print "   (held)";
  485.                5: print "   (given away)";
  486.                6: print "   (in ", (name) x1, ")";
  487.                7: print "   (in ", (the) x1, ")";
  488.                8: print "   (inside ", (the) x1, ")";
  489.                9: print "   (on ", (the) x1, ")";
  490.               10: print "   (lost)";
  491.            }
  492.   Score:          if (deadflag) print "In that game you scored ";
  493.                   else print "You have so far scored ";
  494.                   print score, " out of a possible ", MAX_SCORE,
  495.                   ", in ", turns, " turn";
  496.                   if (turns>1) print "s"; return;
  497.   FullScore: switch(n)
  498.            {   1: if (deadflag) print "The score was ";
  499.                   else          print "The score is ";
  500.                   "made up as follows:^";
  501.                2: "finding sundry items";
  502.                3: "visiting various places";
  503.                4: print "total (out of ", MAX_SCORE; ")";
  504.            }
  505.   Inv:     switch(n)
  506.            {   1: "You are carrying nothing.";
  507.                2: print "You are carrying";
  508.            }
  509.   Take:    switch(n)
  510.            {   1: "Taken.";
  511.                2: "You are always self-possessed.";
  512.                3: "I don't suppose ", (the) x1, " would care for that.";
  513.                4: print "You'd have to get ";
  514.                   if (x1 has supporter) print "off "; else print "out of ";
  515.                   print_ret (the) x1, " first.";
  516.                5: "You already have ", (thatorthose) x1, ".";
  517.                6: if (noun has pluralname) print "Those seem ";
  518.                   else print "That seems ";
  519.                   "to belong to ", (the) x1, ".";
  520.                7: if (noun has pluralname) print "Those seem ";
  521.                   else print "That seems ";
  522.                   "to be a part of ", (the) x1, ".";
  523.                8: print_ret (Cthatorthose) x1, " ", (isorare) x1,
  524.                   "n't available.";
  525.                9: print_ret (The) x1, " ", (isorare) x1, "n't open.";
  526.               10: if (x1 has pluralname) print "They're ";
  527.                   else print "That's ";
  528.                   "hardly portable.";
  529.               11: if (x1 has pluralname) print "They're ";
  530.                   else print "That's ";
  531.                   "fixed in place.";
  532.               12: "You're carrying too many things already.";
  533.               13: "(putting ", (the) x1, " into ", (the) SACK_OBJECT,
  534.                   " to make room)";
  535.            }
  536.   Drop:    switch(n)
  537.            {   1: if (x1 has pluralname) print (The) x1, " are ";
  538.                   else print (The) x1, " is ";
  539.                   "already here.";
  540.                2: "You haven't got ", (thatorthose) x1, ".";
  541.                3: "(first taking ", (the) x1, " off)";
  542.                4: "Dropped.";
  543.            }
  544.   Remove:  switch(n)
  545.            {   1: if (x1 has pluralname) print "They are"; else print "It is ";
  546.                   " unfortunately closed.";
  547.                2: if (x1 has pluralname)
  548.                       print "But they aren't";
  549.                   else print "But it isn't";
  550.                   " there now.";
  551.                3: "Removed.";
  552.            }
  553.   PutOn:   switch(n)
  554.            {   1: "You need to be holding ", (the) x1,
  555.                   " before you can put ", (itorthem) x1,
  556.                   " on top of something else.";
  557.                2: "You can't put something on top of itself.";
  558.                3: "Putting things on ", (the) x1, " would achieve nothing.";
  559.                4: "You lack the dexterity.";
  560.                5: "(first taking ", (itorthem) x1, " off)^";
  561.                6: "There is no more room on ", (the) x1, ".";
  562.                7: "Done.";
  563.                8: "You put ", (the) x1, " on ", (the) second, ".";
  564.            }
  565.   Insert:  switch(n)
  566.            {   1: "You need to be holding ", (the) x1,
  567.                   " before you can put ", (itorthem) x1,
  568.                   " into something else.";
  569.                2: print_ret (Cthatorthose) x1, " can't contain things.";
  570.                3: print_ret (The) x1, " ", (isorare) x1, " closed.";
  571.                4: "You'll need to take ", (itorthem) x1, " off first.";
  572.                5: "You can't put something inside itself.";
  573.                6: "(first taking ", (itorthem) x1, " off)^";
  574.                7: "There is no more room in ", (the) x1, ".";
  575.                8: "Done.";
  576.                9: "You put ", (the) x1, " into ", (the) second, ".";
  577.            }
  578.   EmptyT:  switch(n)
  579.            {   1: print_ret (The) x1, " can't contain things.";
  580.                2: print_ret (The) x1, " ", (isorare) x1, " closed.";
  581.                3: print_ret (The) x1, " ", (isorare) x1, " empty already.";
  582.            }
  583.   Give:    switch(n)
  584.            {   1: "You aren't holding ", (the) x1, ".";
  585.                2: "You juggle ", (the) x1,
  586.                   " for a while, but don't achieve much.";
  587.                3: print (The) x1;
  588.                   if (x1 has pluralname) print " don't";
  589.                   else print " doesn't";
  590.                   " seem interested.";
  591.            }
  592.   Show:    switch(n)
  593.            {   1: "You aren't holding ", (the) x1, ".";
  594.                2: print_ret (The) x1, " ", (isorare) x1, " unimpressed.";
  595.            }
  596.   Enter:   switch(n)
  597.            {   1: print "But you're already ";
  598.                   if (x1 has supporter) print "on "; else print "in ";
  599.                   print_ret (the) x1, ".";
  600.                2: if (x1 has pluralname) print "They're"; else print "That's";
  601.                   " not something you can enter.";
  602.                3: "You can't get into the closed ", (name) x1, ".";
  603.                4: "You can only get into something freestanding.";
  604.                5: print "You get ";
  605.                   if (x1 has supporter) print "onto "; else print "into ";
  606.                   print_ret (the) x1, ".";
  607.                6: print "(getting ";
  608.                   if (x1 has supporter) print "off "; else print "out of ";
  609.                   print (the) x1; ")";
  610.                7: if (x1 has supporter) "(getting onto ", (the) x1, ")^";
  611.                   if (x1 has container) "(getting into ", (the) x1, ")^";
  612.                   "(entering ", (the) x1, ")^";
  613.            }
  614.   GetOff:         "But you aren't on ", (the) x1, " at the moment.";
  615.   Exit:    switch(n)
  616.            {   1: "But you aren't in anything at the moment.";
  617.                2: "You can't get out of the closed ", (name) x1, ".";
  618.                3: print "You get ";
  619.                   if (x1 has supporter) print "off "; else print "out of ";
  620.                   print_ret (the) x1, ".";
  621.            }
  622.   VagueGo:       "You'll have to say which compass direction to go in.";
  623.  
  624.   Go:      switch(n)
  625.            {   1: print "You'll have to get ";
  626.                   if (x1 has supporter) print "off "; else print "out of ";
  627.                   print_ret (the) x1, " first.";
  628.                2: "You can't go that way.";
  629.                3: "You are unable to climb ", (the) x1, ".";
  630.                4: "You are unable to descend by ", (the) x1, ".";
  631.                5: "You can't, since ", (the) x1, " ", (isorare) x1,
  632.                   " in the way.";
  633.                6: print "You can't, since ", (the) x1;
  634.                   if (x1 has pluralname) " lead nowhere.";
  635.                   " leads nowhere.";
  636.            }
  637.  
  638.   LMode1:         " is now in its normal ~brief~ printing mode, which gives
  639.                    long descriptions of places never before visited and short
  640.                    descriptions otherwise.";
  641.   LMode2:         " is now in its ~verbose~ mode, which always gives long
  642.                    descriptions of locations
  643.                    (even if you've been there before).";
  644.   LMode3:         " is now in its ~superbrief~ mode, which always gives short
  645.                    descriptions of locations
  646.                    (even if you haven't been there before).";
  647.  
  648.   Look:    switch(n)
  649.            {   1: print " (on ", (the) x1, ")";
  650.                2: print " (in ", (the) x1, ")";
  651.                3: print " (as "; @print_obj x1; print ")";
  652.                4: print "^On ", (the) x1;
  653.                   WriteListFrom(child(x1),
  654.                       ENGLISH_BIT + RECURSE_BIT + PARTINV_BIT
  655.                       + TERSE_BIT + ISARE_BIT + CONCEAL_BIT);
  656.                   ".";
  657.          default: if (x1~=location)
  658.                   {   if (x1 has supporter) print "^On "; else print "^In ";
  659.                       print (the) x1, " you";
  660.                   }
  661.                   else print "^You";
  662.                   print " can ";
  663.                   if (n==5) print "also "; print "see ";
  664.                   WriteListFrom(child(x1),
  665.                       ENGLISH_BIT + WORKFLAG_BIT + RECURSE_BIT
  666.                       + PARTINV_BIT + TERSE_BIT + CONCEAL_BIT);
  667.                   if (x1~=location) ".";
  668.                   " here.";
  669.            }
  670.  
  671.   Examine: switch(n)
  672.            {   1: "Darkness, noun.  An absence of light to see by.";
  673.                2: "You see nothing special about ", (the) x1, ".";
  674.                3: print (The) x1, " ", (isorare) x1, " currently switched ";
  675.                   if (x1 has on) "on."; else "off.";
  676.            }
  677.   LookUnder: switch(n)
  678.            {   1: "But it's dark.";
  679.                2: "You find nothing of interest.";
  680.            }
  681.  
  682.   Search:  switch(n)
  683.            {   1: "But it's dark.";
  684.                2: "There is nothing on ", (the) x1, ".";
  685.                3: print "On ", (the) x1;
  686.                   WriteListFrom(child(x1),
  687.                       TERSE_BIT + ENGLISH_BIT + ISARE_BIT + CONCEAL_BIT);
  688.                   ".";
  689.                4: "You find nothing of interest.";
  690.                5: "You can't see inside, since ", (the) x1, " ",
  691.                   (isorare) x1, " closed.";
  692.                6: print_ret (The) x1, " ", (isorare) x1, " empty.";
  693.                7: print "In ", (the) x1;
  694.                   WriteListFrom(child(x1),
  695.                       TERSE_BIT + ENGLISH_BIT + ISARE_BIT + CONCEAL_BIT);
  696.                   ".";
  697.            }
  698.  
  699.   Unlock:  switch(n)
  700.            {   1: if (x1 has pluralname) print "They don't ";
  701.                   else print "That doesn't ";
  702.                   "seem to be something you can unlock.";
  703.                2: print_ret (ctheyreorthats) x1,
  704.                   " unlocked at the moment.";
  705.                3: if (x1 has pluralname) print "Those don't ";
  706.                   else print "That doesn't ";
  707.                   "seem to fit the lock.";
  708.                4: "You unlock ", (the) x1, ".";
  709.            }
  710.   Lock:    switch(n)
  711.            {   1: if (x1 has pluralname) print "They don't ";
  712.                   else print "That doesn't ";
  713.                   "seem to be something you can lock.";
  714.                2: print_ret (ctheyreorthats) x1, " locked at the moment.";
  715.                3: "First you'll have to close ", (the) x1, ".";
  716.                4: if (x1 has pluralname) print "Those don't ";
  717.                   else print "That doesn't ";
  718.                   "seem to fit the lock.";
  719.                5: "You lock ", (the) x1, ".";
  720.            }
  721.  
  722.   SwitchOn: switch(n)
  723.            {   1: print_ret (ctheyreorthats) x1,
  724.                   " not something you can switch.";
  725.                2: print_ret (ctheyreorthats) x1,
  726.                   " already on.";
  727.                3: "You switch ", (the) x1, " on.";
  728.            }
  729.   SwitchOff: switch(n)
  730.            {   1: print_ret (ctheyreorthats) x1,
  731.                   " not something you can switch.";
  732.                2: print_ret (ctheyreorthats) x1,
  733.                   " already off.";
  734.                3: "You switch ", (the) x1, " off.";
  735.            }
  736.  
  737.   Open:    switch(n)
  738.            {   1: print_ret (ctheyreorthats) x1,
  739.                   " not something you can open.";
  740.                2: if (x1 has pluralname) print "They seem ";
  741.                   else print "It seems ";
  742.                   "to be locked.";
  743.                3: print_ret (ctheyreorthats) x1,
  744.                   " already open.";
  745.                4: print "You open ", (the) x1, ", revealing ";
  746.                   if (WriteListFrom(child(x1),
  747.                       ENGLISH_BIT + TERSE_BIT + CONCEAL_BIT)==0) "nothing.";
  748.                   ".";
  749.                5: "You open ", (the) x1, ".";
  750.            }
  751.  
  752.   Close:   switch(n)
  753.            {   1: print_ret (ctheyreorthats) x1,
  754.                   " not something you can close.";
  755.                2: print_ret (ctheyreorthats) x1,
  756.                   " already closed.";
  757.                3: "You close ", (the) x1, ".";
  758.            }
  759.   Disrobe: switch(n)
  760.            {   1: "You're not wearing ", (thatorthose) x1, ".";
  761.                2: "You take off ", (the) x1, ".";
  762.            }
  763.   Wear:    switch(n)
  764.            {   1: "You can't wear ", (thatorthose) x1, "!";
  765.                2: "You're not holding ", (thatorthose) x1, "!";
  766.                3: "You're already wearing ", (thatorthose) x1, "!";
  767.                4: "You put on ", (the) x1, ".";
  768.            }
  769.   Eat:     switch(n)
  770.            {   1: print_ret (ctheyreorthats) x1,
  771.                   " plainly inedible.";
  772.                2: "You eat ", (the) x1, ". Not bad.";
  773.            }
  774.   Yes, No:        "That was a rhetorical question.";
  775.   Burn:           "This dangerous act would achieve little.";
  776.   Pray:           "Nothing practical results from your prayer.";
  777.   Wake:           "The dreadful truth is, this is not a dream.";
  778.   WakeOther:      "That seems unnecessary.";
  779.   Kiss:           "Keep your mind on the game.";
  780.   Think:          "What a good idea.";
  781.   Smell:          "You smell nothing unexpected.";
  782.   Listen:         "You hear nothing unexpected.";
  783.   Taste:          "You taste nothing unexpected.";
  784.   Touch:   switch(n)
  785.            {   1: "Keep your hands to yourself!";
  786.                2: "You feel nothing unexpected.";
  787.                3: "If you think that'll help.";
  788.            }
  789.   Dig:            "Digging would achieve nothing here.";
  790.   Cut:            "Cutting ", (thatorthose) x1, " up would achieve little.";
  791.   Jump:           "You jump on the spot, fruitlessly.";
  792.   JumpOver, Tie:  "You would achieve nothing by this.";
  793.   Drink:          "There's nothing suitable to drink here.";
  794.   Fill:           "But there's no water here to carry.";
  795.   Sorry:          #ifdef DIALECT_US;
  796.                   "Oh, don't apologize.";
  797.                   #ifnot;
  798.                   "Oh, don't apologise.";
  799.                   #endif;
  800.   Strong:         "Real adventurers do not use such language.";
  801.   Mild:           "Quite.";
  802.   Attack:         "Violence isn't the answer to this one.";
  803.   Swim:           "There's not enough water to swim in.";
  804.   Swing:          "There's nothing sensible to swing here.";
  805.   Blow:           "You can't usefully blow ", (thatorthose) x1, ".";
  806.   Rub:            "You achieve nothing by this.";
  807.   Set:            "No, you can't set ", (thatorthose) x1, ".";
  808.   SetTo:          "No, you can't set ", (thatorthose) x1, " to anything.";
  809.   WaveHands:      "You wave, feeling foolish.";
  810.   Wave:    switch(n)
  811.            {   1: "But you aren't holding ", (thatorthose) x1, ".";
  812.                2: "You look ridiculous waving ", (the) x1, ".";
  813.            }
  814.   Pull, Push, Turn:
  815.            switch(n)
  816.            {   1: if (x1 has pluralname) print "Those are ";
  817.                   else print "It is ";
  818.                   "fixed in place.";
  819.                2: "You are unable to.";
  820.                3: "Nothing obvious happens.";
  821.                4: "That would be less than courteous.";
  822.            }
  823.   PushDir: switch(n)
  824.            {   1: "Is that the best you can think of?";
  825.                2: "That's not a direction.";
  826.                3: "Not that way you can't.";
  827.            }
  828.   Squeeze: switch(n)
  829.            {   1: "Keep your hands to yourself.";
  830.                2: "You achieve nothing by this.";
  831.            }
  832.   ThrowAt: switch(n)
  833.            {   1: "Futile.";
  834.                2: "You lack the nerve when it comes to the crucial moment.";
  835.            }
  836.   Tell:    switch(n)
  837.            {   1: "You talk to yourself a while.";
  838.                2: "This provokes no reaction.";
  839.            }
  840.   Answer, Ask:    "There is no reply.";
  841.   Buy:            "Nothing is on sale.";
  842.   Sing:           "Your singing is abominable.";
  843.   Climb:          "I don't think much is to be achieved by that.";
  844.   Wait:           "Time passes.";
  845.   Sleep:          "You aren't feeling especially drowsy.";
  846.   Consult:        "You discover nothing of interest in ", (the) x1, ".";
  847. ];
  848.  
  849. ! ---------------------------------------------------------------------------
  850.